for _ in range(int(input())):
n,k=map(int,input().split())
arr=list(map(int,input().split()))
pos=[]
neg=[]
dist=0
for item in arr:
if item>=0:
pos.append(item)
elif item<0:
neg.append(item*(-1))
pos.sort()
neg.sort()
if len(neg)==0:
for i in range(len(pos)-1,-1,-k):
dist+=2*pos[i]
dist-=pos[-1]
elif len(pos)==0:
for i in range(len(neg)-1,-1,-k):
dist+=2*neg[i]
dist-=neg[-1]
elif pos[-1]>neg[-1]:
for i in range(len(neg)-1,-1,-k):
dist+=2*neg[i]
for i in range(len(pos)-1,-1,-k):
dist+=2*pos[i]
dist-=pos[-1]
elif neg[-1]>=pos[-1]:
for i in range(len(pos)-1,-1,-k):
dist+=2*pos[i]
for i in range(len(neg)-1,-1,-k):
dist+=2*neg[i]
dist-=neg[-1]
print(dist)
545B - Equidistant String | 1244C - The Football Season |
1696B - NIT Destroys the Universe | 1674A - Number Transformation |
1244E - Minimizing Difference | 1688A - Cirno's Perfect Bitmasks Classroom |
219A - k-String | 952A - Quirky Quantifiers |
451B - Sort the Array | 1505H - L BREAK into program |
171E - MYSTERIOUS LANGUAGE | 630D - Hexagons |
1690D - Black and White Stripe | 1688D - The Enchanted Forest |
1674C - Infinite Replacement | 712A - Memory and Crow |
1676C - Most Similar Words | 1681A - Game with Cards |
151C - Win or Freeze | 1585A - Life of a Flower |
1662A - Organizing SWERC | 466C - Number of Ways |
1146A - Love "A" | 1618D - Array and Operations |
1255A - Changing Volume | 1710C - XOR Triangle |
415C - Mashmokh and Numbers | 8A - Train and Peter |
591A - Wizards' Duel | 1703G - Good Key Bad Key |